package com.zdb.n1.service;

import com.zdb.n1.entity.ExerciseRecord;
import com.zdb.n1.entity.ExerciseType;
import com.zdb.n1.payload.response.MessageResponse;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.Date;
import java.util.List;
import java.util.Map;

public interface ExerciseRecordService {

    ExerciseRecord saveExerciseRecord(ExerciseRecord exerciseRecord);

    ExerciseRecord getExerciseRecordById(Long id);

    List<ExerciseRecord> getAllExerciseRecordsForCurrentUser();

    Page<ExerciseRecord> getExerciseRecordsForCurrentUserPaged(Pageable pageable);

    List<ExerciseRecord> getExerciseRecordsByDateRange(Date startDate, Date endDate);

    List<ExerciseRecord> getExerciseRecordsByType(ExerciseType exerciseType);

    Integer getTotalDurationForCurrentUser();

    Integer getTotalDurationForCurrentUserByDateRange(Date startDate, Date endDate);

    Double getTotalCaloriesForCurrentUser();

    Double getTotalCaloriesForCurrentUserByDateRange(Date startDate, Date endDate);

    Map<ExerciseType, Long> getExerciseTypeDistributionForCurrentUser();

    MessageResponse deleteExerciseRecord(Long id);
} 